/*给你一个字符串数组，请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的所有字母得到的一个新单词。
示例 1:

输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]
示例 2:

输入: strs = [""]
输出: [[""]]
示例 3:

输入: strs = ["a"]
输出: [["a"]]

*/
/*
思路：使用哈希表，对strs中的每一个元素进行排序后的字符串作为key，异位词组成的数组作为value，
*/
const strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
var groupAnagrams = function (strs) {
    const map = new Map();
    for (let str of strs) {
        //分割排序合并
        const key = str.split('').sort().join('');
        if (map.has(key))
            map.set(key, [...map.get(key), str])
        else
            map.set(key, [str])
    }
    return [...map.values()]
};
console.log(groupAnagrams(strs))